﻿#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>
#include <string.h>


//作用域和生命周期
//局部变量的作用域：就是变量所在的局部范围
//全局变量的作用域：整个工程


//int g_val = 2021;//全局变量
////执行性代码必须放到大括号里面
//
//
//int main()
//{
//	printf("1:%d\n", g_val);
//	printf("hehe\n");
//	{
//
//		printf("1:%d\n", g_val);
//		int a = 10;
//		printf("a = %d\n", a);
//	}
//	printf("1:%d\n", g_val);
//
//	return 0;
//
//}


//声明一下变量
//extern int g_val;
//
//int main()
//{
//	printf("%d\n", g_val);
//
//	return 0;
//
//}


//生命周期
//变量的生命周期：变量的创建和销毁之间的时间段
//
//局部变量的生命周期：进入作用域（局部范围）生命开始，出作用域（局部范围）生命结束
//全局变量的生命周期：程序的生命周期

//int main()
//{
//	{
//		int a = 10;
//		printf("%d\n", a);
//	}
//
//	return;
//}


//常量



//int main()
//{
//	//1. 字面常量
//	3.14;
//	10;
//	'a';
//	"abcdef";
//
//
//	//2. const修饰的常变量
//	const int num = 10;//num就是常变量 - 具有常属性（不能被改变的属性）
//	num = 20;
//	prinf("num = %d\n", num);
//
//	int arr[10] = { 0 };//10个元素
//	const int n = 10;
//	int arr[n] = { 0 };//n是变量，这里是不行的
//
//	return 0;
//}



//3. #define 定义的标识符常量
//#define MAX 10000
//int main()
//{
//	//MAX = 20000; //error
//	int n = MAX;
//	printf("n = %d\n",n);
//	return 0;
//}





//4. 枚举常量
//可以一一列举的常量

//enum Sex
//{
//	//这种枚举类型的变量的未来可能取值
//	//枚举常量
//	MALE = 3, //赋初值
//	FEMALE,
//	SECRET
//};
//
//int main()
//{
//	enum Sex s = MALE;
//	//MALE=6；//ERROR
//	printf("%d\n", MALE);
//	printf("%d\n", FEMALE);
//	printf("%d\n", SECRET);
//	printf("%d\n", s);
//	return 0;
//}




//字符串就是一串字符 - 用双引号括起来的一串字符
//字符串在结尾的位置隐藏了一个\0字符
//\0是字符串的结束标志

//int main()
//{
//	"abcdef";
//	"hello biot";
//
//	return 0;
//}

//int main()
//{
//	//字符数组 - 数组是一组相同类型的元素
//	//char arr[] = "hello";
//	char arr1[] = "abc";
//	char arr2[] = {'a','b','c'};
//	char arr3[] = { 'a','b','c','\0' };
//
//
//	printf("%s\n", arr1);
//	printf("%s\n", arr2);
//	printf("%s\n", arr3);
//
//	//求一下字符串的长度
//	//int len = strlen("abc");//string length
//	//printf("%d\n", len);
//
//	printf("%d\n", strlen(arr1));
//	printf("%d\n", strlen(arr2));//随机值
//	printf("%d\n", strlen(arr3));
//	return 0；
//
//}


//int main()
//{
//	//转义字符 转变了它原来的意思
//	//printf("c:\test\test.c");
//	//printf("ab\ncd");
//
//
//	printf("%c\n", '\'');
//	printf("%s\n", "'");
//	printf("%s\n", "\"");
//	printf("c:\\test\\test.c");
//
//
//	return 0;
//}

//int main()
//{
//	printf("%d\n", '\130');
//	printf("%c\n", '\130');
//	//8进制的130是十进制的多少呢？
//	//x -- ascii码值是88
//	printf("%d\n", '\101');
//	printf("%c\n", '\101');//a -- ascii码值是65 -- 8进制是101
//
//	printf("%d\n", '\x30');
//	printf("%c\n", '\x30');
//
//	printf("%d\n", strlen("c:\test\628\test.c"));
//
//	return 0;
//}


//注释：是用来解释复杂代码的

//int main()
//{
//	//int a = 10; //C++注释风格
//
//	/*
//	int b = 0;
//	*/
//	//C语言的注释风格 - 不支持嵌套注释
//	return 0;
//}

//int main()
//{
//	int input = 0;
//	printf("加入比特:>\n");
//	printf("那要好好学习吗（1/0）？>:");
//	scanf("%d",&input);
//	if (input == 1)
//	{
//		printf("好offer\n");
//	}
//	else
//	{
//		printf("卖红薯\n");
//	}	
//	return 0;
//}

//比特 - 30000代码 - 找一个不错的工作
//int main()
//{
//	int line = 0;
//	while (line < 30000)
//	{
//		printf("写代码:%d\n",line);
//		line++;
//	}
//	if (line = 30000)
//	{
//		printf("好offer");
//	}
//	return 0;
//}


//int Add(int x, int y)
//{
//	int z = 0;
//	z = x + y;
//	return z;
//}
//
//int main()
//{
//	int num1 = 0;
//	int num2 = 0;
//	scanf("%d%d", &num1, &num2);
//	//int sum = num1 + num2;
//	int sum = Add(num1, num2);
//
//	printf("%d\n", sum);
//	return 0;
//}


//int main()
//{
//	//数组 - 一组相同类型的元素集合
//	//10个整型1-10存起来
//	int arr[10] = {1,2,3,4,5,6,7,8,9,10};
//	char ch[5] = { 'a','b','c' };//不完全初始化，其余的默认为0
//	//数组是用下标来访问的
//	int i = 0;
//	while (i < 10)
//	{
//		printf("%d", arr[i]);
//		i++;
//	}
//	return 0;
//}


//int main()
//{
//	float a = 9 / 2;
//	float b = 9 / 2.0;
//	printf("%f\n", a);
//	printf("%f\n", b);
//
//	int c = 9 % 2;
//	printf("%d\n", c);
//	return 0;
//}


//int main()
//{
//	int a = 2;
//	int b = a << 1;
//	printf("%d\n", b);
//	return 0;
//}

//位操作符
//& 按位与
//| 按位或
//^ 按位异或


//赋值操作符



//a+b: + 有两个操作数，双目操作符
//单目操作符：只有一个操作数



//int main()
//{
//
//	//0表示假，非0就是真
//	int a = 10;
//	printf("%d\n", !a);
//
//	int b = 0;
//	printf("%d\n", !b);
//
//	if (a) //如果a为真，做事
//	{
//
//	}
//	if (!a) //如果a为假，做事
//	{
//
//	}
//
//	return 0;
//}



int main()
{
	//sizeof 是一个操作符，后面的括号可以省略
	// 不是函数
	//计算类型或者变量的大小的
	int a = 10;
	printf("%d\n", sizeof(a));
	printf("%d\n", sizeof(int));

	int arr[10] = { 0 };
	printf("%d\n", sizeof(arr));
	printf("%d\n",sizeof(arr[0]));
	int sz = sizeof(arr) / sizeof(arr[0]);
	printf("%d\n", sz);

	return 0;
}